iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

從新手開始TypeScript系列 第 12

Day12-TypeScript(TS)的選擇性屬性(Optional Properties)

  • 分享至 

  • xImage
  •  

今天要來講解TypeScript(TS)的選擇性屬性(Optional Properties),
在使用函式時時常會碰到參數有時需要有時不需要的情形,
但邏輯又幾乎相同,
這時就可以把這些函示寫在一起,再利用選擇性屬性參數傳入,
就能避免重複一直寫相同的函示。

首先來複習一下Day8的介面範例吧。

//宣告介面
interface MyFunc{
    x:number;
    y:number;
}

//函式
let func1=(p:MyFunc)=>{
    console.log(p.x,p.y);
}

//使用函式
func1({x:10});//error  每項參數都必須對應到
func1({x:10,y:20});
func1({x:10,y:20,z:20}); //error  未標記z視為錯誤

這個範例所標記的參數在使用時不能多也不能少
如此一來,在使用時就會缺少彈性,
那若是參數傳入可有可無時,
這時就需要使用選擇性屬性來增加函式的彈性,
使用方式非常簡單,
在介面屬性名稱後面加上 ? 就行了,
例如,若是y為可有可無的參數,
介面的宣告如下,

//宣告介面
interface MyFunc{
    x:number;
    y?:number;
}

如此一來,y即為選擇性屬性

那麼函示可能也會有些不同需要做些邏輯判斷,
例如,

//函式
let func1=(p:MyFunc)=>{
    if(p.y){
        console.log(p.x,p.y);
    }else{
        console.log(p.x);
    }
}

//使用函式
func1({x:10,y:20});
func1({x:10});

像這樣將y訂為選擇性屬性後,
在使用上就有更多不同的彈性了,
也可以避免重複寫太多相同的函式喔。

今日結語

今天教得很簡單,
但是非常實用呢,
希望大家可以利用選擇性屬性,
讓自己的程式碼更加簡潔俐落,
也更容易維護喔!


上一篇
Day11-TypeScript(TS)的類別(Class)
下一篇
Day13-TypeScript(TS)修改成員
系列文
從新手開始TypeScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言